1. Field of the Invention
This invention relates to multi-clock domain digital data communication and, more particularly, to detecting the alignment of multiple clock signals.
2. Description of the Related Art
New techniques to ensure the reliability of the communication of digital data have become necessary as the speed of communication links has increased. Particularly within computer memory systems, a reference clock may accompany parallel digital data so as to provide a mechanism for determining the appropriate time to sample the data. However, it is often the case that multiple clock domains are established within a given communications system due to the difficulties involved in distributing a single clock throughout a large system. Although the clocks of each individual clock domain may or may not have the same frequency, it is to be expected that the phase relationship between any two clocks in different domains will vary depending on changes in voltages and temperature between the domains over time. Jitter in the phase offset between a transmitting clock and a receiving clock tends to move the sampling point away from the ideal point in the received data signal, resulting in poor timing margins and/or a higher bit-error-rate (BER). The higher the speed at which a communications link is clocked, the more significant the effects of phase jitter become.
For example, assume a system where two clocks, fast_clk and slow_clk are generated from two phase locked loops (PLLs) but from a single reference, ref_clk. The PLL's would typically be placed several millimeters apart from each other to avoid coupling and noise issues, and the two clocks will inevitably have significant inter clock skew with respect to a common coincident edge. In some cases, 2-port SRAM based FIFO's may be used as a brute force solution. However, FIFO design can be tricky and difficult to prove 0% failure across all logical and physical conditions. Also, the complexity and area overhead of SRAM FIFO's can be overkill for clocks that maintain a simple, periodic (if skewed) relationship with each other.
In addition, if the ratio of the clock frequencies across a given boundary is not an integral multiple, determining when the respective clocks are aligned can be difficult. Therefore, it is desirable to have a mechanism to determine when to sample the data across a clock boundary while maintaining a robust timing margin thereby reducing the impact of phase changes between clock domains and enabling higher communication speeds. Still further, it can be important to pick a point in time “deterministically” when one or more ratioed synchronous clocks are aligned, especially when it pertains to domain crossing between such clocks.
In view of the above, methods and mechanisms for performing high bandwidth, deterministic, skew tolerant domain crossing between ratioed synchronous clocks are desired.